// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "SQLConstraintImpl.h"
#include "SQLTableElement.h"
#include "SQLTableConstraint.h"
#include "../SQLReplaceable.h"

class SQLDefault
    : virtual public SQLConstraintImpl,
      virtual public SQLTableElement,
      virtual public SQLTableConstraint,
      virtual public SQLReplaceable
{
public:
  SQLExpr_ptr expr;
  SQLExpr_ptr column;
  BOOL_ptr withValues;

  SQLDefault();

  SQLDefault(SQLExpr_ptr expr, SQLExpr_ptr column);
  SHAREDOBJECT(SQLDefault);

  SQLExpr_ptr getColumn();

  void setColumn(SQLExpr_ptr column);

  SQLExpr_ptr getExpr();

  void setExpr(SQLExpr_ptr x);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  void cloneTo(SQLDefault_ptr x);

  SQLObject_ptr clone();

  // @Override
  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

  BOOL_ptr isWithValues();

  void setWithValues(BOOL_ptr withValues);
};
